Introduction
The purpose of my project is to gain a better understanding of neighborhood-related trends in West Little Rock, Arkansas, and determine what long-term impacts a road-widening project along Highway 10 may have on the area. By developing a demographic profile along with population projections and forecasts, I will examine historic, current, and expected future neighborhood trends in West Little Rock. I am particularly interested in analyzing the road-widening project because it is happening in the place where I grew up. Having first-hand knowledge of the place, I am aware that the project will have unmitigated impacts on a historic African American neighborhood, and that the Arkansas Department of Transportation (ARDOT) has done little to consider how the project may shape the composition of surrounding neighborhoods.

ARDOT held several public meetings for the project, though they were primarily informative. The state transportation department does not have any guidance on how to engage with communities outside of NEPA – which requires them to provide opportunities for public participation, typically after the project has already started and alternatives have been developed. This has led to an approach to transportation planning in which communities are unable to meaningfully participate in the decision-making process. Other states, such as Illinois, have developed more guidance for considering community impacts related to proposed transportation projects. Such community impact assessments require the collection of qualitative data through questionnaires that are distributed to the public. Factors considered in those surveys, such as visual impacts, air pollution, safety, and property acquisition, are difficult to measure with the tools that we have been introduced to this semester in Neighborhood Analysis.
Since I am familiar with the project and some of the potential qualitative impacts, I wanted to use this project as an opportunity to apply some of the skills that I have acquired this semester and look at what stories quantitative data can tell. So, in this project I will be developing a demographic profile of West Little Rock, with specific emphasis on the neighborhood of Pankey, using ACS and decennial census data; as well as developing population projections and forecasts to determine how exactly West Little Rock is expected to change, and see if my findings are aligned with those made by other local and regional planners.
Background
Highway Project Description
In 2016, the Arkansas Department of Transportation announced a project targeted at widening an 8.3-mile segment of Highway 10, an arterial road in West Little Rock. According to ARDOT, Highway 10 is one of the most heavily congested roadways in the state. The benefit-cost analysis for the project shows that widening the road will alleviate traffic along Highway 10 through 2035, at which point the road will become congested and need to be widened again. Still, the benefits of the project include a short-term reduction in congestion, improved safety for automobile drivers, and a reduction in vehicular emissions associated with idling. Another benefit is improved access to Pinnacle Mountain, a state park which draws thousands of tourists annually, through vehicular traffic alleviation and the expansion of existing bike trail networks.
In the process of working on this project, the ARDOT website was redesigned and links to reports and other documents associated with the initial planning stages of this project were removed. So, it has been difficult to track what all ARDOT has accomplished thus far and what stage they are at now by relying solely on internet sources. From talking with relatives and friends who still live in the area, I learned that construction has already started, and that the road has been closed for extended periods of time, making other routes congested as a result. Since the project is happening in phases, these street closures will be ongoing for at least five years.
West Little Rock
West Little Rock is a section of the City of Little Rock that encompasses at least a dozen neighborhoods. The area saw a boom in development in the 1980s and 1990s during Bill Clintons gubernatorial and presidential terms, and during the early 2000s before the recession. West Little Rock is in the midst of another development boom today, with the creation and expansion of residential and transit infrastructure.
Highway 10 is one of four major arterial east/west roads in West Little Rock which is heavily traveled by people who commute downtown, and experiences routine congestion. Highway 10 is a bit unique because it is interchangeably referred to as Highway 10 and Cantrell Road. The intersection at Interstate-430 is often where the distinction is made between the two, with everything to the west being considered Highway 10 and everything to the east being Cantrell Road. Nevertheless, there are signs all along Highway 10 that identify the road as Cantrell. The two names seem to have different connotations, with Cantrell invoking feelings of residential space and Highway 10 invoking feelings of commercial space. While it faces just as much congestion as Highway 10, Cantrell has remained a five lane road for years. Proposals have been made to expand that road as well, though residents along Cantrell have been more vocally opposed to them. They tend to be most concerned about the safety and economic implications of such a project as the Cantrell area is older and more established. Since Highway 10 has more new development with commercial buildings set further back from the road, it has received less criticism.

For the sake of this report, I will be looking at five neighborhoods as defined by 2010 census tracts: Pinnacle Valley, Charleston Heights, River Mountain, Chenal, and Pankey. Each tract encompasses several small, distinct neighborhoods with unique demographic characteristics. For the sake of utilizing ACS and decennial census data, I have decided to define neighborhoods at the tract level and will provide insight into potential variations within the tracts as needed.
Pankey
Pankey is a small neighborhood in West Little Rock centered along Highway 10 between Sam Peck and Taylor Loop Road. It is a historic neighborhood that was founded over a century ago by Josephine Pankey – a teacher, philanthropist, and community leader. Josephine Pankey purchased land to establish the community for African American residents in 1907, at a time when the area was undeveloped and about five miles west of the city limits. Highway 10 was eventually paved as a two-lane road in the 1930s, and Pankey was annexed into Little Rock in the 1960s. For a number of reasons, the neighborhood’s population started to decline in the 1970s and Highway 10 was widened from two lanes to four in the 1980s. This initial widening separated the community geographically since the neighborhood is anchored by Highway 10 with residences and public buildings on either side of the road. Since Pankey is the neighborhood that is most likely to be directly impacted by the Highway 10 widening project, I will highlight it often throughout my analysis.
The formal boundaries of Pankey are divided between the census tracts of Pankey and Pinnacle Valley. The census tract “Pankey” includes other middle class and upper-middle class neighborhoods which have different physical and demographic characteristics.
Methods and Approach
The goal of my project is to understand neighborhood change in West Little Rock. My approach for tackling this is to develop a demographic profile along with population projections and forecasts. I initially considered developing opportunity indices and maps, but since the highway project has implications for growth and change over time, I thought that looking at population change and existing demographic factors would be the best approach for my project.
For this project, I will be utilizing what I learned from the Session 9 and 11 labs and various readings, along with online sources for guidance on mapping census data. I will also be referencing existing neighborhood change forecasts and weaving in my own qualitative analysis.
Data Sources
I will be using 2000 and 2010 decennial census data and 2019 American Community Survey (ACS) data for this project. Other sources of information include existing regional and local plans.
Demographic Profile
Understanding neighborhood change is a complex task that requires comparing trends within and across various places and scales. To understand how the Highway 10 road-widening project will impact surrounding neighborhoods, it’s important to look not only at those neighborhoods that will be directly impacted, but at adjacent neighborhoods as well as the entire city, county, state, and country. It’s likely that the road-widening project will have impacts beyond the project area, influencing where future growth and investment will take place, prioritizing West Little Rock over other parts of the city.
In order to develop a demographic profile for this project, I decided to utilize 2010 decennial census data and ACS data to look at different variables related to the socioeconomic conditions of neighborhoods in Little Rock, especially the five census tracts in my study area. Though the 2010 numbers are slightly dated, decennial data offers more detailed information at the block group scale - something that I could not find in ACS data.
Population

Above is a map that shows the population distribution for Pulaski County, Arkansas, as estimated for 2019. From this map, it’s apparent that the fastest growing places in the county are those outside of the city limits, particularly towards Benton and Bryant to the southwest and Maumelle to the northwest. Within the five tract study area, Charleston Heights is the most populated with 6,800 residents, followed by River Mountain with 5,500, then Chenal with 4,600, then Pinnacle Valley with 4,200, and lastly Pankey with 2,900.
Race

The two maps above show the racial composition of Pulaski County by percentage and census block group. The data is from the 2010 decennial census, since it is difficult to make estimates for ACS data at the block group level for more recent years. As visible on the two maps above, block groups with a higher percentage of Black residents tend to be closer to downtown Little Rock and concentrated on the south and east sides of town. Block groups with a higher percentage of white residents tend to be more heavily concentrated on the north and west side of Little Rock, as well as outside of the city’s boundaries. I excluded maps of the Hispanic/Latino and Asian populations because they were not heavily concentrated or in visible patterns. There is a Latino neighborhood emerging in Southwest Little Rock, often referred to as “Little Mexico,” but it is a distance away from the study area and not well represented in the 2010 data.
West Little Rock has a visibly high concentration of white residents. Directly along Highway 10 there seems to be a slightly smaller concentration, with more minorities living in those neighborhoods. Based on data from the 2019 ACS 5-year estimates, Chenal and Charleston Heights are the two tracts in the study area with the highest percent white population and the lowest minority population. Pinnacle Valley and River Mountain have the highest percent Black population in the study area, with the lowest percent of Asian and Hispanic/Latino residents. Pankey has the highest percent Asian and Hispanic/Latino population in the study area, with about average white and Black populations.
Income

The map above shows the average annual income for residents in Pulaski County by census tract, as reported in 2019 ACS estimates. This map shows that the highest incomes are concentrated in West Little Rock and in the Heights and Hillcrest neighborhoods on the north side of the city. The highest incomes are visibly concentrated in Chenal. Charleston Heights and Pankey having slightly higher than average incomes in the study area, with Pinnacle Valley having the lowest. More broadly, it’s clear that the tracts in the study area have more wealth than other parts of the city, especially those on the south and east sides.
Population Projections
Existing Projections

Above is a population pyramid for the City of Little Rock, based on 2019 ACS data. It suggests that the city has a population that is aging, though millennials seem to be the largest age group. Central Arkansas’s regional planning agency, Metroplan, states in their long range plan that the region is expecting to see significant shifts in demographics soon, with an aging baby boomer population and larger millennial population, each seeking unique housing and lifestyle options that are at odds with the region’s current infrastructure. The projection that they provide appears to be a linear curve projection since it is a straight line. Their projection estimates that the region will gain about 200,000 new residents by 2050 - up from its current total of 700,000. Little Rock’s municipal planning agency appears to focus on current planning and does not have any long-range plans or population projections that are specific to the city.
One of the primary goals of Metroplan’s regional plan for Central Arkansas is developing quality transportation corridors with more choices for pedestrians and bicyclists. Throughout the plan, its mentioned that the expansion of transit services beyond those designed for vehicles will improve access to opportunity and make the region more attractive/competitive. From my perspective, the Highway 10 expansion project defies the goals outlined in the regional plan, as it will facilitate sprawl and make the road harder to navigate for pedestrians. Adding a bike lane adjacent to the road, as recommended in the project proposal, will primarily benefit those biking for recreational purposes between Pinnacle Mountain State Park and the city’s existing bike trail network along the Arkansas River. Since many of the people who live in West Little Rock go to work and school downtown, it is unlikely that they will be able to commute via trails for pedestrian or cyclist.
Proposed Projections

Above are the population projections that I produced for the five tracts within the study area. I developed them with the “trend projection” Excel workbook provided in Session 11, using total population data. In the workbook, I input data from the 2000 and 2010 census. I also used 2019 ACS 5-year estimates as a substitute for 2020 census data. More accurate projections could be made when tract-level data from the 2020 census is released.
These charts tell a compelling story about how growth is happening in West Little Rock. Chenal and Charleston Heights are expected to grow at much faster rates than the rest of West Little Rock. Pinnacle Valley is expected to grow at a moderate pace, while River Mountain and Pankey are expected to stagnate. In most cases, I would say that the linear and gompertz projections are the most accurate, though the parabolic projections seem more accurate in the tracts that are growing more slowly.
Forecast
Central Arkansas’s regional planning authority estimated in their 2050 long-range plan that the region will grow by more than 30% in the next thirty years. Their estimate is based on a linear population projection - the city grew by 15% between 2000 and 2015, so they expect it to grow at the same rate in the future. Still, Little Rock is growing at a much slower pace than other parts of the state, specifically Northwest Arkansas. Last year, Northwest Arkansas had a total net migration of 6,000 residents, while the Little Rock metro only had 150. The Little Rock area has not experienced much growth, in terms of jobs and development, when compared to Northwest Arkansas. While Little Rock is the largest metropolitan area in the state, Northwest Arkansas is expected to outgrow Central Arkansas by 2030. So, as Northwest Arkansas continues to grow, it seems more realistic that growth in Little Rock will stagnate by 2050. Also, when looking at regional data, there is growth happening in neighboring cities and counties which could suggest that many residents of Little Rock are moving to those places.
Still, growth will continue to happen in some parts of Little Rock. When examining the five census tracts that comprise the study area for the Highway 10 road widening project, it became apparent that even within West Little Rock, growth will likely occur in some parts and not others. Chenal will likely continue to experience the most growth and new development, as it is the fastest growing tract in the city with the wealthiest residents. Charleston Heights and Pinnacle Valley will follow a similar trend as they continues to develop, while Pankey and River Mountain will likely not experience much new growth at all. All of the tracts primarily contain suburban, residential neighborhoods. From my perspective, the difference between growth in the tracts hinges on when they were first developed. West Little Rock is an area that is defined by sprawl, so since Pankey and River Mountain were fully developed between the 1980s and 2000s, it makes sense that they would not experience much new growth.
Since there are no incentives for the city to limit sprawl and encourage density, it is likely that the properties, infrastructure, and people in Pankey and River Mountain will continue to age. The widening of Highway 10 might encourage new commercial development along the roadway, but it will likely have few physical impacts on residential areas. Nevertheless, the widening of Highway 10 could negatively affect property values in those tracts, which could push current residents to newer neighborhoods in Chenal or Charleston Heights, further exacerbating sprawl. The neighborhood of Pankey will undeniably be impacted by the Highway 10 road widening project. As a low-density, not-fully-developed residential neighborhood situated along Highway 10, the city has placed pressure on residents of the neighborhood to move elsewhere. This is because the neighborhood will no longer be aligned with the land use vision for the area once the road is widened. As is, the Pankey neighborhood is physically divided by Highway 10. With a speed limit of 45 and limited vision around the bend where the neighborhood is situated, it’s unsafe for residents of Pankey to travel from one side of the neighborhood to the other. Widening the road will undoubtedly make travel less safe for residents of Pankey and expose them to more traffic noise and visual impacts. Also, residents whose homes were directly adjacent to the roadway have already had to sell their property and move elsewhere. So, while this project may be facilitating overall growth in West Little Rock and alleviating congestion in the short-run, it will also be breaking apart long-standing communities like those in Pankey and encouraging sprawl that will negatively impact existing neighborhoods.
The table below shows the percent change in occupied housing units for each tract in West Little Rock. This supports the argument that Pankey and River Mountain are experiencing minimal growth when compared to the other tracts in West Little Rock.
Change in Occupied Housing Units
| Pankey |
1,127 |
1,182 |
4.9% |
| River Mountain |
2,196 |
2,228 |
1.5% |
| Pinnacle Valley |
889 |
1,682 |
89.2% |
| Charleston Heights |
1,091 |
1,957 |
79.4% |
| Chenal |
538 |
1,317 |
144.8% |
Chenal is by far the tract that has experienced the most new development. Pinnacle Valley likely shows a higher percent change in occupied housing units since it is a larger tract that contains more undeveloped land. Some residents and politicians in the city have pushed back against the growth in far West Little Rock, because it has led to greater segregation both racially and economically, and degradation of service provisions in other parts of the city. So, essentially, the rest of the city is expected to suffer as a result of increased sprawl. One major concern associated with growth in Chenal and Charleston Heights is education. There are no public middle or high schools in West Little Rock, so many families send their children to private and charter schools. The city has also put more funding into elementary schools in West Little Rock which has led to the closure and/or consolidation of schools in other parts of the city. The expansion of Highway 10 and the encouragement of new growth in far West Little Rock will undoubtedly put pressure on the city to develop middle and high schools in that part of town. In turn, funding will be reduced for schools in other parts of Little Rock which will inevitably diminish the possibility for equitable access to opportunity.
Conclusion
Widening Highway 10 will facilitate growth and alleviate traffic congestion in parts of West Little Rock. As stated in ARDOT’s project proposal, the direct benefits of the project include increased connectivity, improved safety for drivers, and reduced air pollution from with idling. After examining the demographic profile for the county and developing population projections and forecasts for both the city and West Little Rock, it’s clear that the project will also have negative impacts. One of the main downsides of the road-widening project is that it will further facilitate sprawl. In the long-run, this will lead to more pollution, inequity, and vehicle-dependency. With regard to the Pankey neighborhood, widening Highway 10 has already displaced residents and will ultimately break apart the community.
While the project has already been approved and entered the construction phase, the outcomes of widening Highway 10 should serve as an educational opportunity for ARDOT and Little Rock’s city planners to consider what impacts new development may have on all residents. There should be greater accountability with regard to both direct-community and city-wide impacts. The city should also consider making density a higher priority in order to discourage sprawl and segregation.
While this project provides a brief overview of growth trends in West Little Rock, there are several opportunities to expand this research. One way to continue would be to collect more qualitative data directly from residents either through surveys or interviews. There appear to be a variety of values and needs regarding housing and transit, so understanding what those needs are and how widening Highway 10 will either support or oppose those would be valuable. Also, examining other factors related to housing, education, and jobs in more detail and developing opportunity projections would be useful.
LS0tCnRpdGxlOiAiRmluYWwgUHJvamVjdCIKYXV0aG9yOiAiR3JldGNoZW4gSGFycmlzb24iCmRhdGU6ICI1LzcvMjAyMSIKb3V0cHV0OiAKICBodG1sX25vdGVib29rOgogICAgdG9jOiB5ZXMKICBwZGZfZG9jdW1lbnQ6CiAgICB0b2M6IHllcwogIGh0bWxfZG9jdW1lbnQ6CiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogeWVzCmVkaXRvcl9vcHRpb25zOgogIAogIGNodW5rX291dHB1dF90eXBlOiBpbmxpbmUKLS0tCgoKCmBgYHtyIHNldHVwLCBpbmNsdWRlID0gRkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkodGlkeWNlbnN1cykKCmFwaV9rZXk8LSIxYzIxZWI3YjgxNjk0YzQ0ODMwN2M5ZDY4MTliMWE1MmI5OTcyNThjIgpgYGAKCiMgSW50cm9kdWN0aW9uCgpUaGUgcHVycG9zZSBvZiBteSBwcm9qZWN0IGlzIHRvIGdhaW4gYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiBuZWlnaGJvcmhvb2QtcmVsYXRlZCB0cmVuZHMgaW4gV2VzdCBMaXR0bGUgUm9jaywgQXJrYW5zYXMsIGFuZCBkZXRlcm1pbmUgd2hhdCBsb25nLXRlcm0gaW1wYWN0cyBhIHJvYWQtd2lkZW5pbmcgcHJvamVjdCBhbG9uZyBIaWdod2F5IDEwIG1heSBoYXZlIG9uIHRoZSBhcmVhLiBCeSBkZXZlbG9waW5nIGEgZGVtb2dyYXBoaWMgcHJvZmlsZSBhbG9uZyB3aXRoIHBvcHVsYXRpb24gcHJvamVjdGlvbnMgYW5kIGZvcmVjYXN0cywgSSB3aWxsIGV4YW1pbmUgaGlzdG9yaWMsIGN1cnJlbnQsIGFuZCBleHBlY3RlZCBmdXR1cmUgbmVpZ2hib3Job29kIHRyZW5kcyBpbiBXZXN0IExpdHRsZSBSb2NrLiBJIGFtIHBhcnRpY3VsYXJseSBpbnRlcmVzdGVkIGluIGFuYWx5emluZyB0aGUgcm9hZC13aWRlbmluZyBwcm9qZWN0IGJlY2F1c2UgaXQgaXMgaGFwcGVuaW5nIGluIHRoZSBwbGFjZSB3aGVyZSBJIGdyZXcgdXAuIEhhdmluZyBmaXJzdC1oYW5kIGtub3dsZWRnZSBvZiB0aGUgcGxhY2UsIEkgYW0gYXdhcmUgdGhhdCB0aGUgcHJvamVjdCB3aWxsIGhhdmUgdW5taXRpZ2F0ZWQgaW1wYWN0cyBvbiBhIGhpc3RvcmljIEFmcmljYW4gQW1lcmljYW4gbmVpZ2hib3Job29kLCBhbmQgdGhhdCB0aGUgQXJrYW5zYXMgRGVwYXJ0bWVudCBvZiBUcmFuc3BvcnRhdGlvbiAoQVJET1QpIGhhcyBkb25lIGxpdHRsZSB0byBjb25zaWRlciBob3cgdGhlIHByb2plY3QgbWF5IHNoYXBlIHRoZSBjb21wb3NpdGlvbiBvZiBzdXJyb3VuZGluZyBuZWlnaGJvcmhvb2RzLgoKYGBge3IgM19GYWN0RmluZGVyLCBlY2hvPUZBTFNFLCBmaWcuY2FwdGlvbj0iSGlnaHdheSAxMCBQcm9qZWN0IFN0dWR5IEFyZWEiLCBmaWdfd2lkdGg9JzUwJSd9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJoaWdod2F5MTBwcm9qLnBuZyIpCmBgYAoKQVJET1QgaGVsZCBzZXZlcmFsIHB1YmxpYyBtZWV0aW5ncyBmb3IgdGhlIHByb2plY3QsIHRob3VnaCB0aGV5IHdlcmUgcHJpbWFyaWx5IGluZm9ybWF0aXZlLiBUaGUgc3RhdGUgdHJhbnNwb3J0YXRpb24gZGVwYXJ0bWVudCBkb2VzIG5vdCBoYXZlIGFueSBndWlkYW5jZSBvbiBob3cgdG8gZW5nYWdlIHdpdGggY29tbXVuaXRpZXMgb3V0c2lkZSBvZiBORVBBIOKAkyB3aGljaCByZXF1aXJlcyB0aGVtIHRvIHByb3ZpZGUgb3Bwb3J0dW5pdGllcyBmb3IgcHVibGljIHBhcnRpY2lwYXRpb24sIHR5cGljYWxseSBhZnRlciB0aGUgcHJvamVjdCBoYXMgYWxyZWFkeSBzdGFydGVkIGFuZCBhbHRlcm5hdGl2ZXMgaGF2ZSBiZWVuIGRldmVsb3BlZC4gVGhpcyBoYXMgbGVkIHRvIGFuIGFwcHJvYWNoIHRvIHRyYW5zcG9ydGF0aW9uIHBsYW5uaW5nIGluIHdoaWNoIGNvbW11bml0aWVzIGFyZSB1bmFibGUgdG8gbWVhbmluZ2Z1bGx5IHBhcnRpY2lwYXRlIGluIHRoZSBkZWNpc2lvbi1tYWtpbmcgcHJvY2Vzcy4gT3RoZXIgc3RhdGVzLCBzdWNoIGFzIElsbGlub2lzLCBoYXZlIGRldmVsb3BlZCBtb3JlIGd1aWRhbmNlIGZvciBjb25zaWRlcmluZyBjb21tdW5pdHkgaW1wYWN0cyByZWxhdGVkIHRvIHByb3Bvc2VkIHRyYW5zcG9ydGF0aW9uIHByb2plY3RzLiBTdWNoIGNvbW11bml0eSBpbXBhY3QgYXNzZXNzbWVudHMgcmVxdWlyZSB0aGUgY29sbGVjdGlvbiBvZiBxdWFsaXRhdGl2ZSBkYXRhIHRocm91Z2ggcXVlc3Rpb25uYWlyZXMgdGhhdCBhcmUgZGlzdHJpYnV0ZWQgdG8gdGhlIHB1YmxpYy4gRmFjdG9ycyBjb25zaWRlcmVkIGluIHRob3NlIHN1cnZleXMsIHN1Y2ggYXMgdmlzdWFsIGltcGFjdHMsIGFpciBwb2xsdXRpb24sIHNhZmV0eSwgYW5kIHByb3BlcnR5IGFjcXVpc2l0aW9uLCBhcmUgZGlmZmljdWx0IHRvIG1lYXN1cmUgd2l0aCB0aGUgdG9vbHMgdGhhdCB3ZSBoYXZlIGJlZW4gaW50cm9kdWNlZCB0byB0aGlzIHNlbWVzdGVyIGluIE5laWdoYm9yaG9vZCBBbmFseXNpcy4KClNpbmNlIEkgYW0gZmFtaWxpYXIgd2l0aCB0aGUgcHJvamVjdCBhbmQgc29tZSBvZiB0aGUgcG90ZW50aWFsIHF1YWxpdGF0aXZlIGltcGFjdHMsIEkgd2FudGVkIHRvIHVzZSB0aGlzIHByb2plY3QgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYXBwbHkgc29tZSBvZiB0aGUgc2tpbGxzIHRoYXQgSSBoYXZlIGFjcXVpcmVkIHRoaXMgc2VtZXN0ZXIgYW5kIGxvb2sgYXQgd2hhdCBzdG9yaWVzIHF1YW50aXRhdGl2ZSBkYXRhIGNhbiB0ZWxsLiBTbywgaW4gdGhpcyBwcm9qZWN0IEkgd2lsbCBiZSBkZXZlbG9waW5nIGEgZGVtb2dyYXBoaWMgcHJvZmlsZSBvZiBXZXN0IExpdHRsZSBSb2NrLCB3aXRoIHNwZWNpZmljIGVtcGhhc2lzIG9uIHRoZSBuZWlnaGJvcmhvb2Qgb2YgUGFua2V5LCB1c2luZyBBQ1MgYW5kIGRlY2VubmlhbCBjZW5zdXMgZGF0YTsgYXMgd2VsbCBhcyBkZXZlbG9waW5nIHBvcHVsYXRpb24gcHJvamVjdGlvbnMgYW5kIGZvcmVjYXN0cyB0byBkZXRlcm1pbmUgaG93IGV4YWN0bHkgV2VzdCBMaXR0bGUgUm9jayBpcyBleHBlY3RlZCB0byBjaGFuZ2UsIGFuZCBzZWUgaWYgbXkgZmluZGluZ3MgYXJlIGFsaWduZWQgd2l0aCB0aG9zZSBtYWRlIGJ5IG90aGVyIGxvY2FsIGFuZCByZWdpb25hbCBwbGFubmVycy4KCiMgQmFja2dyb3VuZAoKIyMjIEhpZ2h3YXkgUHJvamVjdCBEZXNjcmlwdGlvbgoKSW4gMjAxNiwgdGhlIEFya2Fuc2FzIERlcGFydG1lbnQgb2YgVHJhbnNwb3J0YXRpb24gYW5ub3VuY2VkIGEgcHJvamVjdCB0YXJnZXRlZCBhdCB3aWRlbmluZyBhbiA4LjMtbWlsZSBzZWdtZW50IG9mIEhpZ2h3YXkgMTAsIGFuIGFydGVyaWFsIHJvYWQgaW4gV2VzdCBMaXR0bGUgUm9jay4gQWNjb3JkaW5nIHRvIEFSRE9ULCBIaWdod2F5IDEwIGlzIG9uZSBvZiB0aGUgbW9zdCBoZWF2aWx5IGNvbmdlc3RlZCByb2Fkd2F5cyBpbiB0aGUgc3RhdGUuIFRoZSBiZW5lZml0LWNvc3QgYW5hbHlzaXMgZm9yIHRoZSBwcm9qZWN0IHNob3dzIHRoYXQgd2lkZW5pbmcgdGhlIHJvYWQgd2lsbCBhbGxldmlhdGUgdHJhZmZpYyBhbG9uZyBIaWdod2F5IDEwIHRocm91Z2ggMjAzNSwgYXQgd2hpY2ggcG9pbnQgdGhlIHJvYWQgd2lsbCBiZWNvbWUgY29uZ2VzdGVkIGFuZCBuZWVkIHRvIGJlIHdpZGVuZWQgYWdhaW4uIFN0aWxsLCB0aGUgYmVuZWZpdHMgb2YgdGhlIHByb2plY3QgaW5jbHVkZSBhIHNob3J0LXRlcm0gcmVkdWN0aW9uIGluIGNvbmdlc3Rpb24sIGltcHJvdmVkIHNhZmV0eSBmb3IgYXV0b21vYmlsZSBkcml2ZXJzLCBhbmQgYSByZWR1Y3Rpb24gaW4gdmVoaWN1bGFyIGVtaXNzaW9ucyBhc3NvY2lhdGVkIHdpdGggaWRsaW5nLiBBbm90aGVyIGJlbmVmaXQgaXMgaW1wcm92ZWQgYWNjZXNzIHRvIFBpbm5hY2xlIE1vdW50YWluLCBhIHN0YXRlIHBhcmsgd2hpY2ggZHJhd3MgdGhvdXNhbmRzIG9mIHRvdXJpc3RzIGFubnVhbGx5LCB0aHJvdWdoIHZlaGljdWxhciB0cmFmZmljIGFsbGV2aWF0aW9uIGFuZCB0aGUgZXhwYW5zaW9uIG9mIGV4aXN0aW5nIGJpa2UgdHJhaWwgbmV0d29ya3MuCgpJbiB0aGUgcHJvY2VzcyBvZiB3b3JraW5nIG9uIHRoaXMgcHJvamVjdCwgdGhlIEFSRE9UIHdlYnNpdGUgd2FzIHJlZGVzaWduZWQgYW5kIGxpbmtzIHRvIHJlcG9ydHMgYW5kIG90aGVyIGRvY3VtZW50cyBhc3NvY2lhdGVkIHdpdGggdGhlIGluaXRpYWwgcGxhbm5pbmcgc3RhZ2VzIG9mIHRoaXMgcHJvamVjdCB3ZXJlIHJlbW92ZWQuIFNvLCBpdCBoYXMgYmVlbiBkaWZmaWN1bHQgdG8gdHJhY2sgd2hhdCBhbGwgQVJET1QgaGFzIGFjY29tcGxpc2hlZCB0aHVzIGZhciBhbmQgd2hhdCBzdGFnZSB0aGV5IGFyZSBhdCBub3cgYnkgcmVseWluZyBzb2xlbHkgb24gaW50ZXJuZXQgc291cmNlcy4gRnJvbSB0YWxraW5nIHdpdGggcmVsYXRpdmVzIGFuZCBmcmllbmRzIHdobyBzdGlsbCBsaXZlIGluIHRoZSBhcmVhLCBJIGxlYXJuZWQgdGhhdCBjb25zdHJ1Y3Rpb24gaGFzIGFscmVhZHkgc3RhcnRlZCwgYW5kIHRoYXQgdGhlIHJvYWQgaGFzIGJlZW4gY2xvc2VkIGZvciBleHRlbmRlZCBwZXJpb2RzIG9mIHRpbWUsIG1ha2luZyBvdGhlciByb3V0ZXMgY29uZ2VzdGVkIGFzIGEgcmVzdWx0LiBTaW5jZSB0aGUgcHJvamVjdCBpcyBoYXBwZW5pbmcgaW4gcGhhc2VzLCB0aGVzZSBzdHJlZXQgY2xvc3VyZXMgd2lsbCBiZSBvbmdvaW5nIGZvciBhdCBsZWFzdCBmaXZlIHllYXJzLgoKIyMjIFdlc3QgTGl0dGxlIFJvY2sKCldlc3QgTGl0dGxlIFJvY2sgaXMgYSBzZWN0aW9uIG9mIHRoZSBDaXR5IG9mIExpdHRsZSBSb2NrIHRoYXQgZW5jb21wYXNzZXMgYXQgbGVhc3QgYSBkb3plbiBuZWlnaGJvcmhvb2RzLiBUaGUgYXJlYSBzYXcgYSBib29tIGluIGRldmVsb3BtZW50IGluIHRoZSAxOTgwcyBhbmQgMTk5MHMgZHVyaW5nIEJpbGwgQ2xpbnRvbnMgZ3ViZXJuYXRvcmlhbCBhbmQgcHJlc2lkZW50aWFsIHRlcm1zLCBhbmQgZHVyaW5nIHRoZSBlYXJseSAyMDAwcyBiZWZvcmUgdGhlIHJlY2Vzc2lvbi4gV2VzdCBMaXR0bGUgUm9jayBpcyBpbiB0aGUgbWlkc3Qgb2YgYW5vdGhlciBkZXZlbG9wbWVudCBib29tIHRvZGF5LCB3aXRoIHRoZSBjcmVhdGlvbiBhbmQgZXhwYW5zaW9uIG9mIHJlc2lkZW50aWFsIGFuZCB0cmFuc2l0IGluZnJhc3RydWN0dXJlLiAKCkhpZ2h3YXkgMTAgaXMgb25lIG9mIGZvdXIgbWFqb3IgYXJ0ZXJpYWwgZWFzdC93ZXN0IHJvYWRzIGluIFdlc3QgTGl0dGxlIFJvY2sgd2hpY2ggaXMgaGVhdmlseSB0cmF2ZWxlZCBieSBwZW9wbGUgd2hvIGNvbW11dGUgZG93bnRvd24sIGFuZCBleHBlcmllbmNlcyByb3V0aW5lIGNvbmdlc3Rpb24uIEhpZ2h3YXkgMTAgaXMgYSBiaXQgdW5pcXVlIGJlY2F1c2UgaXQgaXMgaW50ZXJjaGFuZ2VhYmx5IHJlZmVycmVkIHRvIGFzIEhpZ2h3YXkgMTAgYW5kIENhbnRyZWxsIFJvYWQuIFRoZSBpbnRlcnNlY3Rpb24gYXQgSW50ZXJzdGF0ZS00MzAgaXMgb2Z0ZW4gd2hlcmUgdGhlIGRpc3RpbmN0aW9uIGlzIG1hZGUgYmV0d2VlbiB0aGUgdHdvLCB3aXRoIGV2ZXJ5dGhpbmcgdG8gdGhlIHdlc3QgYmVpbmcgY29uc2lkZXJlZCBIaWdod2F5IDEwIGFuZCBldmVyeXRoaW5nIHRvIHRoZSBlYXN0IGJlaW5nIENhbnRyZWxsIFJvYWQuIE5ldmVydGhlbGVzcywgdGhlcmUgYXJlIHNpZ25zIGFsbCBhbG9uZyBIaWdod2F5IDEwIHRoYXQgaWRlbnRpZnkgdGhlIHJvYWQgYXMgQ2FudHJlbGwuIFRoZSB0d28gbmFtZXMgc2VlbSB0byBoYXZlIGRpZmZlcmVudCBjb25ub3RhdGlvbnMsIHdpdGggQ2FudHJlbGwgaW52b2tpbmcgZmVlbGluZ3Mgb2YgcmVzaWRlbnRpYWwgc3BhY2UgYW5kIEhpZ2h3YXkgMTAgaW52b2tpbmcgZmVlbGluZ3Mgb2YgY29tbWVyY2lhbCBzcGFjZS4gV2hpbGUgaXQgZmFjZXMganVzdCBhcyBtdWNoIGNvbmdlc3Rpb24gYXMgSGlnaHdheSAxMCwgQ2FudHJlbGwgaGFzIHJlbWFpbmVkIGEgZml2ZSBsYW5lIHJvYWQgZm9yIHllYXJzLiBQcm9wb3NhbHMgaGF2ZSBiZWVuIG1hZGUgdG8gZXhwYW5kIHRoYXQgcm9hZCBhcyB3ZWxsLCB0aG91Z2ggcmVzaWRlbnRzIGFsb25nIENhbnRyZWxsIGhhdmUgYmVlbiBtb3JlIHZvY2FsbHkgb3Bwb3NlZCB0byB0aGVtLiBUaGV5IHRlbmQgdG8gYmUgbW9zdCBjb25jZXJuZWQgYWJvdXQgdGhlIHNhZmV0eSBhbmQgZWNvbm9taWMgaW1wbGljYXRpb25zIG9mIHN1Y2ggYSBwcm9qZWN0IGFzIHRoZSBDYW50cmVsbCBhcmVhIGlzIG9sZGVyIGFuZCBtb3JlIGVzdGFibGlzaGVkLiBTaW5jZSBIaWdod2F5IDEwIGhhcyBtb3JlIG5ldyBkZXZlbG9wbWVudCB3aXRoIGNvbW1lcmNpYWwgYnVpbGRpbmdzIHNldCBmdXJ0aGVyIGJhY2sgZnJvbSB0aGUgcm9hZCwgaXQgaGFzIHJlY2VpdmVkIGxlc3MgY3JpdGljaXNtLgoKYGBge3J9Cgprbml0cjo6aW5jbHVkZV9ncmFwaGljcygiaGlnaHdheTEwdHJhY3RzLnBuZyIpCgpgYGAKCkZvciB0aGUgc2FrZSBvZiB0aGlzIHJlcG9ydCwgSSB3aWxsIGJlIGxvb2tpbmcgYXQgZml2ZSBuZWlnaGJvcmhvb2RzIGFzIGRlZmluZWQgYnkgMjAxMCBjZW5zdXMgdHJhY3RzOiBQaW5uYWNsZSBWYWxsZXksIENoYXJsZXN0b24gSGVpZ2h0cywgUml2ZXIgTW91bnRhaW4sIENoZW5hbCwgYW5kIFBhbmtleS4gRWFjaCB0cmFjdCBlbmNvbXBhc3NlcyBzZXZlcmFsIHNtYWxsLCBkaXN0aW5jdCBuZWlnaGJvcmhvb2RzIHdpdGggdW5pcXVlIGRlbW9ncmFwaGljIGNoYXJhY3RlcmlzdGljcy4gRm9yIHRoZSBzYWtlIG9mIHV0aWxpemluZyBBQ1MgYW5kIGRlY2VubmlhbCBjZW5zdXMgZGF0YSwgSSBoYXZlIGRlY2lkZWQgdG8gZGVmaW5lIG5laWdoYm9yaG9vZHMgYXQgdGhlIHRyYWN0IGxldmVsIGFuZCB3aWxsIHByb3ZpZGUgaW5zaWdodCBpbnRvIHBvdGVudGlhbCB2YXJpYXRpb25zIHdpdGhpbiB0aGUgdHJhY3RzIGFzIG5lZWRlZC4KCgojIyMgUGFua2V5CgpQYW5rZXkgaXMgYSBzbWFsbCBuZWlnaGJvcmhvb2QgaW4gV2VzdCBMaXR0bGUgUm9jayBjZW50ZXJlZCBhbG9uZyBIaWdod2F5IDEwIGJldHdlZW4gU2FtIFBlY2sgYW5kIFRheWxvciBMb29wIFJvYWQuIEl0IGlzIGEgaGlzdG9yaWMgbmVpZ2hib3Job29kIHRoYXQgd2FzIGZvdW5kZWQgb3ZlciBhIGNlbnR1cnkgYWdvIGJ5IEpvc2VwaGluZSBQYW5rZXkg4oCTIGEgdGVhY2hlciwgcGhpbGFudGhyb3Bpc3QsIGFuZCBjb21tdW5pdHkgbGVhZGVyLiBKb3NlcGhpbmUgUGFua2V5IHB1cmNoYXNlZCBsYW5kIHRvIGVzdGFibGlzaCB0aGUgY29tbXVuaXR5IGZvciBBZnJpY2FuIEFtZXJpY2FuIHJlc2lkZW50cyBpbiAxOTA3LCBhdCBhIHRpbWUgd2hlbiB0aGUgYXJlYSB3YXMgdW5kZXZlbG9wZWQgYW5kIGFib3V0IGZpdmUgbWlsZXMgd2VzdCBvZiB0aGUgY2l0eSBsaW1pdHMuIEhpZ2h3YXkgMTAgd2FzIGV2ZW50dWFsbHkgcGF2ZWQgYXMgYSB0d28tbGFuZSByb2FkIGluIHRoZSAxOTMwcywgYW5kIFBhbmtleSB3YXMgYW5uZXhlZCBpbnRvIExpdHRsZSBSb2NrIGluIHRoZSAxOTYwcy4gRm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMsIHRoZSBuZWlnaGJvcmhvb2TigJlzIHBvcHVsYXRpb24gc3RhcnRlZCB0byBkZWNsaW5lIGluIHRoZSAxOTcwcyBhbmQgSGlnaHdheSAxMCB3YXMgd2lkZW5lZCBmcm9tIHR3byBsYW5lcyB0byBmb3VyIGluIHRoZSAxOTgwcy4gVGhpcyBpbml0aWFsIHdpZGVuaW5nIHNlcGFyYXRlZCB0aGUgY29tbXVuaXR5IGdlb2dyYXBoaWNhbGx5IHNpbmNlIHRoZSBuZWlnaGJvcmhvb2QgaXMgYW5jaG9yZWQgYnkgSGlnaHdheSAxMCB3aXRoIHJlc2lkZW5jZXMgYW5kIHB1YmxpYyBidWlsZGluZ3Mgb24gZWl0aGVyIHNpZGUgb2YgdGhlIHJvYWQuIFNpbmNlIFBhbmtleSBpcyB0aGUgbmVpZ2hib3Job29kIHRoYXQgaXMgbW9zdCBsaWtlbHkgdG8gYmUgZGlyZWN0bHkgaW1wYWN0ZWQgYnkgdGhlIEhpZ2h3YXkgMTAgd2lkZW5pbmcgcHJvamVjdCwgSSB3aWxsIGhpZ2hsaWdodCBpdCBvZnRlbiB0aHJvdWdob3V0IG15IGFuYWx5c2lzLgoKVGhlIGZvcm1hbCBib3VuZGFyaWVzIG9mIFBhbmtleSBhcmUgZGl2aWRlZCBiZXR3ZWVuIHRoZSBjZW5zdXMgdHJhY3RzIG9mIFBhbmtleSBhbmQgUGlubmFjbGUgVmFsbGV5LiBUaGUgY2Vuc3VzIHRyYWN0ICJQYW5rZXkiIGluY2x1ZGVzIG90aGVyIG1pZGRsZSBjbGFzcyBhbmQgdXBwZXItbWlkZGxlIGNsYXNzIG5laWdoYm9yaG9vZHMgd2hpY2ggaGF2ZSBkaWZmZXJlbnQgcGh5c2ljYWwgYW5kIGRlbW9ncmFwaGljIGNoYXJhY3RlcmlzdGljcy4KCiMgTWV0aG9kcyBhbmQgQXBwcm9hY2gKClRoZSBnb2FsIG9mIG15IHByb2plY3QgaXMgdG8gdW5kZXJzdGFuZCBuZWlnaGJvcmhvb2QgY2hhbmdlIGluIFdlc3QgTGl0dGxlIFJvY2suIE15IGFwcHJvYWNoIGZvciB0YWNrbGluZyB0aGlzIGlzIHRvIGRldmVsb3AgYSBkZW1vZ3JhcGhpYyBwcm9maWxlIGFsb25nIHdpdGggcG9wdWxhdGlvbiBwcm9qZWN0aW9ucyBhbmQgZm9yZWNhc3RzLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGRldmVsb3Bpbmcgb3Bwb3J0dW5pdHkgaW5kaWNlcyBhbmQgbWFwcywgYnV0IHNpbmNlIHRoZSBoaWdod2F5IHByb2plY3QgaGFzIGltcGxpY2F0aW9ucyBmb3IgZ3Jvd3RoIGFuZCBjaGFuZ2Ugb3ZlciB0aW1lLCBJIHRob3VnaHQgdGhhdCBsb29raW5nIGF0IHBvcHVsYXRpb24gY2hhbmdlIGFuZCBleGlzdGluZyBkZW1vZ3JhcGhpYyBmYWN0b3JzIHdvdWxkIGJlIHRoZSBiZXN0IGFwcHJvYWNoIGZvciBteSBwcm9qZWN0LgoKRm9yIHRoaXMgcHJvamVjdCwgSSB3aWxsIGJlIHV0aWxpemluZyB3aGF0IEkgbGVhcm5lZCBmcm9tIHRoZSBTZXNzaW9uIDkgYW5kIDExIGxhYnMgYW5kIHZhcmlvdXMgcmVhZGluZ3MsIGFsb25nIHdpdGggb25saW5lIHNvdXJjZXMgZm9yIGd1aWRhbmNlIG9uIG1hcHBpbmcgY2Vuc3VzIGRhdGEuIEkgd2lsbCBhbHNvIGJlIHJlZmVyZW5jaW5nIGV4aXN0aW5nIG5laWdoYm9yaG9vZCBjaGFuZ2UgZm9yZWNhc3RzIGFuZCB3ZWF2aW5nIGluIG15IG93biBxdWFsaXRhdGl2ZSBhbmFseXNpcy4KCiMgRGF0YSBTb3VyY2VzCgpJIHdpbGwgYmUgdXNpbmcgMjAwMCBhbmQgMjAxMCBkZWNlbm5pYWwgY2Vuc3VzIGRhdGEgYW5kIDIwMTkgQW1lcmljYW4gQ29tbXVuaXR5IFN1cnZleSAoQUNTKSBkYXRhIGZvciB0aGlzIHByb2plY3QuIE90aGVyIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gaW5jbHVkZSBleGlzdGluZyByZWdpb25hbCBhbmQgbG9jYWwgcGxhbnMuCgojIERlbW9ncmFwaGljIFByb2ZpbGUKClVuZGVyc3RhbmRpbmcgbmVpZ2hib3Job29kIGNoYW5nZSBpcyBhIGNvbXBsZXggdGFzayB0aGF0IHJlcXVpcmVzIGNvbXBhcmluZyB0cmVuZHMgd2l0aGluIGFuZCBhY3Jvc3MgdmFyaW91cyBwbGFjZXMgYW5kIHNjYWxlcy4gVG8gdW5kZXJzdGFuZCBob3cgdGhlIEhpZ2h3YXkgMTAgcm9hZC13aWRlbmluZyBwcm9qZWN0IHdpbGwgaW1wYWN0IHN1cnJvdW5kaW5nIG5laWdoYm9yaG9vZHMsIGl0J3MgaW1wb3J0YW50IHRvIGxvb2sgbm90IG9ubHkgYXQgdGhvc2UgbmVpZ2hib3Job29kcyB0aGF0IHdpbGwgYmUgZGlyZWN0bHkgaW1wYWN0ZWQsIGJ1dCBhdCBhZGphY2VudCBuZWlnaGJvcmhvb2RzIGFzIHdlbGwgYXMgdGhlIGVudGlyZSBjaXR5LCBjb3VudHksIHN0YXRlLCBhbmQgY291bnRyeS4gSXQncyBsaWtlbHkgdGhhdCB0aGUgcm9hZC13aWRlbmluZyBwcm9qZWN0IHdpbGwgaGF2ZSBpbXBhY3RzIGJleW9uZCB0aGUgcHJvamVjdCBhcmVhLCBpbmZsdWVuY2luZyB3aGVyZSBmdXR1cmUgZ3Jvd3RoIGFuZCBpbnZlc3RtZW50IHdpbGwgdGFrZSBwbGFjZSwgcHJpb3JpdGl6aW5nIFdlc3QgTGl0dGxlIFJvY2sgb3ZlciBvdGhlciBwYXJ0cyBvZiB0aGUgY2l0eS4KCkluIG9yZGVyIHRvIGRldmVsb3AgYSBkZW1vZ3JhcGhpYyBwcm9maWxlIGZvciB0aGlzIHByb2plY3QsIEkgZGVjaWRlZCB0byB1dGlsaXplIDIwMTAgZGVjZW5uaWFsIGNlbnN1cyBkYXRhIGFuZCBBQ1MgZGF0YSB0byBsb29rIGF0IGRpZmZlcmVudCB2YXJpYWJsZXMgcmVsYXRlZCB0byB0aGUgc29jaW9lY29ub21pYyBjb25kaXRpb25zIG9mIG5laWdoYm9yaG9vZHMgaW4gTGl0dGxlIFJvY2ssIGVzcGVjaWFsbHkgdGhlIGZpdmUgY2Vuc3VzIHRyYWN0cyBpbiBteSBzdHVkeSBhcmVhLiBUaG91Z2ggdGhlIDIwMTAgbnVtYmVycyBhcmUgc2xpZ2h0bHkgZGF0ZWQsIGRlY2VubmlhbCBkYXRhIG9mZmVycyBtb3JlIGRldGFpbGVkIGluZm9ybWF0aW9uIGF0IHRoZSBibG9jayBncm91cCBzY2FsZSAtIHNvbWV0aGluZyB0aGF0IEkgY291bGQgbm90IGZpbmQgaW4gQUNTIGRhdGEuCgojIyMgUG9wdWxhdGlvbgoKYGBge3J9CmxpdHRsZV9wb3AgPC0gZ2V0X2FjcyhzdGF0ZSA9ICJBUiIsIGNvdW50eSA9ICJQdWxhc2tpIiwgeWVhciA9IDIwMTksIGdlb2dyYXBoeSA9ICJ0cmFjdCIsIHZhcmlhYmxlcyA9ICJCMDEwMDFfMDAxIiwgZ2VvbWV0cnkgPSBUUlVFKQoKbGl0dGxlX3BvcCAlPiUgZ2dwbG90KGFlcyhmaWxsID0gZXN0aW1hdGUpKSArIGdlb21fc2YoY29sb3IgPSBOQSkgKyBzY2FsZV9maWxsX3ZpcmlkaXNfYyhvcHRpb24gPSAiRCIsIGRpcmVjdGlvbiA9IC0xKQpgYGAKCkFib3ZlIGlzIGEgbWFwIHRoYXQgc2hvd3MgdGhlIHBvcHVsYXRpb24gZGlzdHJpYnV0aW9uIGZvciBQdWxhc2tpIENvdW50eSwgQXJrYW5zYXMsIGFzIGVzdGltYXRlZCBmb3IgMjAxOS4gRnJvbSB0aGlzIG1hcCwgaXQncyBhcHBhcmVudCB0aGF0IHRoZSBmYXN0ZXN0IGdyb3dpbmcgcGxhY2VzIGluIHRoZSBjb3VudHkgYXJlIHRob3NlIG91dHNpZGUgb2YgdGhlIGNpdHkgbGltaXRzLCBwYXJ0aWN1bGFybHkgdG93YXJkcyBCZW50b24gYW5kIEJyeWFudCB0byB0aGUgc291dGh3ZXN0IGFuZCBNYXVtZWxsZSB0byB0aGUgbm9ydGh3ZXN0LiBXaXRoaW4gdGhlIGZpdmUgdHJhY3Qgc3R1ZHkgYXJlYSwgQ2hhcmxlc3RvbiBIZWlnaHRzIGlzIHRoZSBtb3N0IHBvcHVsYXRlZCB3aXRoIDYsODAwIHJlc2lkZW50cywgZm9sbG93ZWQgYnkgUml2ZXIgTW91bnRhaW4gd2l0aCA1LDUwMCwgdGhlbiBDaGVuYWwgd2l0aCA0LDYwMCwgdGhlbiBQaW5uYWNsZSBWYWxsZXkgd2l0aCA0LDIwMCwgYW5kIGxhc3RseSBQYW5rZXkgd2l0aCAyLDkwMC4gCgojIyMgUmFjZQoKYGBge3J9CnJhY2UgPC0gYyhXaGl0ZSA9ICJQMDA1MDAzIiwgQmxhY2sgPSAiUDAwNTAwNCIpCgpsaXR0bGVfcmFjZSA8LSBnZXRfZGVjZW5uaWFsKGdlb2dyYXBoeSA9ICJibG9jayIsIHZhcmlhYmxlcyA9IHJhY2UsIHN0YXRlID0gIkFSIiwgY291bnR5ID0gIlB1bGFza2kgQ291bnR5IiwgeWVhciA9ICIyMDEwIiwgZ2VvbWV0cnkgPSBUUlVFLCBzdW1tYXJ5X3ZhciA9ICJQMDAxMDAxIikgCgpsaXR0bGVfcmFjZSAlPiUKICBtdXRhdGUocGN0ID0gMTAwICogKHZhbHVlIC8gc3VtbWFyeV92YWx1ZSkpICU+JQogIGdncGxvdChhZXMoZmlsbCA9IHBjdCkpICsKICBmYWNldF93cmFwKH52YXJpYWJsZSkgKwogIGdlb21fc2YoY29sb3IgPSBOQSkgKwogIHNjYWxlX2ZpbGxfdmlyaWRpc19jKGRpcmVjdGlvbiA9IC0xKQpgYGAKVGhlIHR3byBtYXBzIGFib3ZlIHNob3cgdGhlIHJhY2lhbCBjb21wb3NpdGlvbiBvZiBQdWxhc2tpIENvdW50eSBieSBwZXJjZW50YWdlIGFuZCBjZW5zdXMgYmxvY2sgZ3JvdXAuIFRoZSBkYXRhIGlzIGZyb20gdGhlIDIwMTAgZGVjZW5uaWFsIGNlbnN1cywgc2luY2UgaXQgaXMgZGlmZmljdWx0IHRvIG1ha2UgZXN0aW1hdGVzIGZvciBBQ1MgZGF0YSBhdCB0aGUgYmxvY2sgZ3JvdXAgbGV2ZWwgZm9yIG1vcmUgcmVjZW50IHllYXJzLiBBcyB2aXNpYmxlIG9uIHRoZSB0d28gbWFwcyBhYm92ZSwgYmxvY2sgZ3JvdXBzIHdpdGggYSBoaWdoZXIgcGVyY2VudGFnZSBvZiBCbGFjayByZXNpZGVudHMgdGVuZCB0byBiZSBjbG9zZXIgdG8gZG93bnRvd24gTGl0dGxlIFJvY2sgYW5kIGNvbmNlbnRyYXRlZCBvbiB0aGUgc291dGggYW5kIGVhc3Qgc2lkZXMgb2YgdG93bi4gQmxvY2sgZ3JvdXBzIHdpdGggYSBoaWdoZXIgcGVyY2VudGFnZSBvZiB3aGl0ZSByZXNpZGVudHMgdGVuZCB0byBiZSBtb3JlIGhlYXZpbHkgY29uY2VudHJhdGVkIG9uIHRoZSBub3J0aCBhbmQgd2VzdCBzaWRlIG9mIExpdHRsZSBSb2NrLCBhcyB3ZWxsIGFzIG91dHNpZGUgb2YgdGhlIGNpdHkncyBib3VuZGFyaWVzLiBJIGV4Y2x1ZGVkIG1hcHMgb2YgdGhlIEhpc3BhbmljL0xhdGlubyBhbmQgQXNpYW4gcG9wdWxhdGlvbnMgYmVjYXVzZSB0aGV5IHdlcmUgbm90IGhlYXZpbHkgY29uY2VudHJhdGVkIG9yIGluIHZpc2libGUgcGF0dGVybnMuIFRoZXJlIGlzIGEgTGF0aW5vIG5laWdoYm9yaG9vZCBlbWVyZ2luZyBpbiBTb3V0aHdlc3QgTGl0dGxlIFJvY2ssIG9mdGVuIHJlZmVycmVkIHRvIGFzICJMaXR0bGUgTWV4aWNvLCIgYnV0IGl0IGlzIGEgZGlzdGFuY2UgYXdheSBmcm9tIHRoZSBzdHVkeSBhcmVhIGFuZCBub3Qgd2VsbCByZXByZXNlbnRlZCBpbiB0aGUgMjAxMCBkYXRhLgoKV2VzdCBMaXR0bGUgUm9jayBoYXMgYSB2aXNpYmx5IGhpZ2ggY29uY2VudHJhdGlvbiBvZiB3aGl0ZSByZXNpZGVudHMuIERpcmVjdGx5IGFsb25nIEhpZ2h3YXkgMTAgdGhlcmUgc2VlbXMgdG8gYmUgYSBzbGlnaHRseSBzbWFsbGVyIGNvbmNlbnRyYXRpb24sIHdpdGggbW9yZSBtaW5vcml0aWVzIGxpdmluZyBpbiB0aG9zZSBuZWlnaGJvcmhvb2RzLiBCYXNlZCBvbiBkYXRhIGZyb20gdGhlIDIwMTkgQUNTIDUteWVhciBlc3RpbWF0ZXMsIENoZW5hbCBhbmQgQ2hhcmxlc3RvbiBIZWlnaHRzIGFyZSB0aGUgdHdvIHRyYWN0cyBpbiB0aGUgc3R1ZHkgYXJlYSB3aXRoIHRoZSBoaWdoZXN0IHBlcmNlbnQgd2hpdGUgcG9wdWxhdGlvbiBhbmQgdGhlIGxvd2VzdCBtaW5vcml0eSBwb3B1bGF0aW9uLiBQaW5uYWNsZSBWYWxsZXkgYW5kIFJpdmVyIE1vdW50YWluIGhhdmUgdGhlIGhpZ2hlc3QgcGVyY2VudCBCbGFjayBwb3B1bGF0aW9uIGluIHRoZSBzdHVkeSBhcmVhLCB3aXRoIHRoZSBsb3dlc3QgcGVyY2VudCBvZiBBc2lhbiBhbmQgSGlzcGFuaWMvTGF0aW5vIHJlc2lkZW50cy4gUGFua2V5IGhhcyB0aGUgaGlnaGVzdCBwZXJjZW50IEFzaWFuIGFuZCBIaXNwYW5pYy9MYXRpbm8gcG9wdWxhdGlvbiBpbiB0aGUgc3R1ZHkgYXJlYSwgd2l0aCBhYm91dCBhdmVyYWdlIHdoaXRlIGFuZCBCbGFjayBwb3B1bGF0aW9ucy4KCiMjIyBJbmNvbWUKYGBge3J9CmxpdHRsZV9pbmNvbWUgPC0gZ2V0X2FjcyhnZW9ncmFwaHkgPSAidHJhY3QiLCB2YXJpYWJsZXMgPSAiQjE5MDEzXzAwMSIsIHN0YXRlID0gIkFSIiwgY291bnR5ID0gIlB1bGFza2kiLCBnZW9tZXRyeSA9IFRSVUUpCgpsaXR0bGVfaW5jb21lICU+JSBnZ3Bsb3QoYWVzKGZpbGwgPSBlc3RpbWF0ZSkpICsgZ2VvbV9zZihjb2xvciA9IE5BKSArIHNjYWxlX2ZpbGxfdmlyaWRpc19jKG9wdGlvbiA9ICJEIiwgZGlyZWN0aW9uID0gLTEpCmBgYApUaGUgbWFwIGFib3ZlIHNob3dzIHRoZSBhdmVyYWdlIGFubnVhbCBpbmNvbWUgZm9yIHJlc2lkZW50cyBpbiBQdWxhc2tpIENvdW50eSBieSBjZW5zdXMgdHJhY3QsIGFzIHJlcG9ydGVkIGluIDIwMTkgQUNTIGVzdGltYXRlcy4gVGhpcyBtYXAgc2hvd3MgdGhhdCB0aGUgaGlnaGVzdCBpbmNvbWVzIGFyZSBjb25jZW50cmF0ZWQgaW4gV2VzdCBMaXR0bGUgUm9jayBhbmQgaW4gdGhlIEhlaWdodHMgYW5kIEhpbGxjcmVzdCBuZWlnaGJvcmhvb2RzIG9uIHRoZSBub3J0aCBzaWRlIG9mIHRoZSBjaXR5LiBUaGUgaGlnaGVzdCBpbmNvbWVzIGFyZSB2aXNpYmx5IGNvbmNlbnRyYXRlZCBpbiBDaGVuYWwuIENoYXJsZXN0b24gSGVpZ2h0cyBhbmQgUGFua2V5IGhhdmluZyBzbGlnaHRseSBoaWdoZXIgdGhhbiBhdmVyYWdlIGluY29tZXMgaW4gdGhlIHN0dWR5IGFyZWEsIHdpdGggUGlubmFjbGUgVmFsbGV5IGhhdmluZyB0aGUgbG93ZXN0LiBNb3JlIGJyb2FkbHksIGl0J3MgY2xlYXIgdGhhdCB0aGUgdHJhY3RzIGluIHRoZSBzdHVkeSBhcmVhIGhhdmUgbW9yZSB3ZWFsdGggdGhhbiBvdGhlciBwYXJ0cyBvZiB0aGUgY2l0eSwgZXNwZWNpYWxseSB0aG9zZSBvbiB0aGUgc291dGggYW5kIGVhc3Qgc2lkZXMuCgojIFBvcHVsYXRpb24gUHJvamVjdGlvbnMKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CmxpdHRsZV9wb3BfMjAxOSA8LSBnZXRfYWNzKCJwbGFjZSIsIHN0YXRlID0gIkFSIiwgdGFibGUgPSAiQjAxMDAxIiwgeWVhciA9IDIwMTksIHN1cnZleSA9ICJhY3MxIikKCmxpdHRsZV9wb3BfMjAxOSA8LSBsaXR0bGVfcG9wXzIwMTkgJT4lIGZpbHRlcihOQU1FID09ICJMaXR0bGUgUm9jayBjaXR5LCBBcmthbnNhcyIpICU+JSBtdXRhdGUodmFyaWFibGUgPSBzdHJfcmVwbGFjZSh2YXJpYWJsZSwgIkIwMTAwMV8wIiwgIiIpKSAlPiUgZmlsdGVyKCF2YXJpYWJsZSAlaW4lIGMoIjAxIiwgIjAyIiwgIjI2IikpCgpsaXR0bGVfcG9wXzIwMTkgPC1saXR0bGVfcG9wXzIwMTkgJT4lIAogIG11dGF0ZSh2YXJpYWJsZV9jYXQgPSBjYXNlX3doZW4oCiAgICB2YXJpYWJsZSAlaW4lIGMoIjAzIiwgIjI3IikgfiAiVW5kZXIgNSIsIAogICAgdmFyaWFibGUgJWluJSBjKCIwNCIsICIyOCIpIH4gIjUgdG8gOSIsIAogICAgdmFyaWFibGUgJWluJSBjKCIwNSIsICIyOSIpIH4gIjEwIHRvIDE0IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMDYiLCAiMzAiKSB+ICIxNSB0byAxOSIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjA3IiwgIjMxIikgfiAiMTUgdG8gMTkiLAogICAgdmFyaWFibGUgJWluJSBjKCIwOCIsICIzMiIpIH4gIjIwIHRvIDI0IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMDkiLCAiMzMiKSB+ICIyMCB0byAyNCIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjEwIiwgIjM0IikgfiAiMjAgdG8gMjQiLAogICAgdmFyaWFibGUgJWluJSBjKCIxMSIsICIzNSIpIH4gIjI1IHRvIDI5IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMTIiLCAiMzYiKSB+ICIzMCB0byAzNCIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjEzIiwgIjM3IikgfiAiMzUgdG8gMzkiLAogICAgdmFyaWFibGUgJWluJSBjKCIxNCIsICIzOCIpIH4gIjQwIHRvIDQ0IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMTUiLCAiMzkiKSB+ICI0NSB0byA0OSIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjE2IiwgIjQwIikgfiAiNTAgdG8gNTQiLAogICAgdmFyaWFibGUgJWluJSBjKCIxNyIsICI0MSIpIH4gIjU1IHRvIDU5IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMTgiLCAiNDIiKSB+ICI2MCB0byA2NCIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjE5IiwgIjQzIikgfiAiNjAgdG8gNjQiLAogICAgdmFyaWFibGUgJWluJSBjKCIyMCIsICI0NCIpIH4gIjY1IHRvIDY5IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMjEiLCAiNDUiKSB+ICI2NSB0byA2OSIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjIyIiwgIjQ2IikgfiAiNzAgdG8gNzQiLAogICAgdmFyaWFibGUgJWluJSBjKCIyMyIsICI0NyIpIH4gIjc1IHRvIDc5IiwKICAgIHZhcmlhYmxlICVpbiUgYygiMjQiLCAiNDgiKSB+ICI4MCB0byA4NCIsCiAgICB2YXJpYWJsZSAlaW4lIGMoIjI1IiwgIjQ5IikgfiAiODUgb3IgT2xkZXIiKSkgCgpsaXR0bGVfcG9wXzIwMTkgPC1saXR0bGVfcG9wXzIwMTkgJT4lIAogIG11dGF0ZShzZXhfY2F0ID0gY2FzZV93aGVuKAogICAgdmFyaWFibGUgJWluJSBjKCIwMyIsICIwNCIsICIwNSIsICIwNiIsICIwNyIsICIwOCIsICIwOSIsICIxMCIsICIxMSIsICIxMiIsICIxMyIsICIxNCIsICIxNSIsICIxNiIsICIxNyIsICIxOCIsICIxOSIsICIyMCIsICIyMSIsICIyMiIsICIyMyIsICIyNCIsICIyNSIpIH4gIk1hbGUiLCAKICAgIHZhcmlhYmxlICVpbiUgYygiMjciLCAiMjgiLCAiMjkiLCAiMzAiLCAiMzEiLCAiMzIiLCAiMzMiLCAiMzQiLCAiMzUiLCAiMzYiLCAiMzciLCAiMzgiLCAiMzkiLCAiNDAiLCAiNDEiLCAiNDIiLCAiNDMiLCAiNDQiLCAiNDUiLCAiNDYiLCAiNDciLCAiNDgiLCAiNDkiKSB+ICJGZW1hbGUiKSkKCmxpdHRsZV9wb3BfMjAxOSA8LWxpdHRsZV9wb3BfMjAxOSAlPiUgCiAgZ3JvdXBfYnkodmFyaWFibGVfY2F0LCBzZXhfY2F0KSAlPiUgCiAgc3VtbWFyaXNlKFBvcCA9IHN1bShlc3RpbWF0ZSkpCgpsaXR0bGVfcG9wXzIwMTkgPC0gbGl0dGxlX3BvcF8yMDE5ICU+JSBwaXZvdF93aWRlcihuYW1lc19mcm9tID0gc2V4X2NhdCwgdmFsdWVzX2Zyb20gPSBQb3ApCgpsaXR0bGVfcG9wXzIwMTkgJT4lIHNlbGVjdCh2YXJpYWJsZV9jYXQsIE1hbGUsIEZlbWFsZSkKYGBgCiMjIyBFeGlzdGluZyBQcm9qZWN0aW9ucwoKYGBge3IsIGVjaG8gPSBGQUxTRSwgb3V0LndpZHRoID0gIjUwJSIsIG91dC5oZWlnaHQgPSAiNTAlIiwgZmlnLmNhcCA9ICJwb3B1bGF0aW9uIHB5cmFtaWQifQprbml0cjo6aW5jbHVkZV9ncmFwaGljcygicG9wcHlyYW1pZC5wbmciKQoKYGBgCkFib3ZlIGlzIGEgcG9wdWxhdGlvbiBweXJhbWlkIGZvciB0aGUgQ2l0eSBvZiBMaXR0bGUgUm9jaywgYmFzZWQgb24gMjAxOSBBQ1MgZGF0YS4gSXQgc3VnZ2VzdHMgdGhhdCB0aGUgY2l0eSBoYXMgYSBwb3B1bGF0aW9uIHRoYXQgaXMgYWdpbmcsIHRob3VnaCBtaWxsZW5uaWFscyBzZWVtIHRvIGJlIHRoZSBsYXJnZXN0IGFnZSBncm91cC4gQ2VudHJhbCBBcmthbnNhcydzIHJlZ2lvbmFsIHBsYW5uaW5nIGFnZW5jeSwgTWV0cm9wbGFuLCBzdGF0ZXMgaW4gdGhlaXIgW2xvbmcgcmFuZ2UgcGxhbl0oaHR0cHM6Ly9tZXRyb3BsYW4ub3JnL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIxLzAxL0NlbnRyYWxBcmthbnNhczIwNTAucGRmKSB0aGF0IHRoZSByZWdpb24gaXMgZXhwZWN0aW5nIHRvIHNlZSBzaWduaWZpY2FudCBzaGlmdHMgaW4gZGVtb2dyYXBoaWNzIHNvb24sIHdpdGggYW4gYWdpbmcgYmFieSBib29tZXIgcG9wdWxhdGlvbiBhbmQgbGFyZ2VyIG1pbGxlbm5pYWwgcG9wdWxhdGlvbiwgZWFjaCBzZWVraW5nIHVuaXF1ZSBob3VzaW5nIGFuZCBsaWZlc3R5bGUgb3B0aW9ucyB0aGF0IGFyZSBhdCBvZGRzIHdpdGggdGhlIHJlZ2lvbidzIGN1cnJlbnQgaW5mcmFzdHJ1Y3R1cmUuIFRoZSBwcm9qZWN0aW9uIHRoYXQgdGhleSBwcm92aWRlIGFwcGVhcnMgdG8gYmUgYSBsaW5lYXIgY3VydmUgcHJvamVjdGlvbiBzaW5jZSBpdCBpcyBhIHN0cmFpZ2h0IGxpbmUuIFRoZWlyIHByb2plY3Rpb24gZXN0aW1hdGVzIHRoYXQgdGhlIHJlZ2lvbiB3aWxsIGdhaW4gYWJvdXQgMjAwLDAwMCBuZXcgcmVzaWRlbnRzIGJ5IDIwNTAgLSB1cCBmcm9tIGl0cyBjdXJyZW50IHRvdGFsIG9mIDcwMCwwMDAuIExpdHRsZSBSb2NrJ3MgbXVuaWNpcGFsIHBsYW5uaW5nIGFnZW5jeSBhcHBlYXJzIHRvIGZvY3VzIG9uIGN1cnJlbnQgcGxhbm5pbmcgYW5kIGRvZXMgbm90IGhhdmUgYW55IGxvbmctcmFuZ2UgcGxhbnMgb3IgcG9wdWxhdGlvbiBwcm9qZWN0aW9ucyB0aGF0IGFyZSBzcGVjaWZpYyB0byB0aGUgY2l0eS4KCk9uZSBvZiB0aGUgcHJpbWFyeSBnb2FscyBvZiBNZXRyb3BsYW4ncyByZWdpb25hbCBwbGFuIGZvciBDZW50cmFsIEFya2Fuc2FzIGlzIGRldmVsb3BpbmcgcXVhbGl0eSB0cmFuc3BvcnRhdGlvbiBjb3JyaWRvcnMgd2l0aCBtb3JlIGNob2ljZXMgZm9yIHBlZGVzdHJpYW5zIGFuZCBiaWN5Y2xpc3RzLiBUaHJvdWdob3V0IHRoZSBwbGFuLCBpdHMgbWVudGlvbmVkIHRoYXQgdGhlIGV4cGFuc2lvbiBvZiB0cmFuc2l0IHNlcnZpY2VzIGJleW9uZCB0aG9zZSBkZXNpZ25lZCBmb3IgdmVoaWNsZXMgd2lsbCBpbXByb3ZlIGFjY2VzcyB0byBvcHBvcnR1bml0eSBhbmQgbWFrZSB0aGUgcmVnaW9uIG1vcmUgYXR0cmFjdGl2ZS9jb21wZXRpdGl2ZS4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhlIEhpZ2h3YXkgMTAgZXhwYW5zaW9uIHByb2plY3QgZGVmaWVzIHRoZSBnb2FscyBvdXRsaW5lZCBpbiB0aGUgcmVnaW9uYWwgcGxhbiwgYXMgaXQgd2lsbCBmYWNpbGl0YXRlIHNwcmF3bCBhbmQgbWFrZSB0aGUgcm9hZCBoYXJkZXIgdG8gbmF2aWdhdGUgZm9yIHBlZGVzdHJpYW5zLiBBZGRpbmcgYSBiaWtlIGxhbmUgYWRqYWNlbnQgdG8gdGhlIHJvYWQsIGFzIHJlY29tbWVuZGVkIGluIHRoZSBwcm9qZWN0IHByb3Bvc2FsLCB3aWxsIHByaW1hcmlseSBiZW5lZml0IHRob3NlIGJpa2luZyBmb3IgcmVjcmVhdGlvbmFsIHB1cnBvc2VzIGJldHdlZW4gUGlubmFjbGUgTW91bnRhaW4gU3RhdGUgUGFyayBhbmQgdGhlIGNpdHkncyBleGlzdGluZyBiaWtlIHRyYWlsIG5ldHdvcmsgYWxvbmcgdGhlIEFya2Fuc2FzIFJpdmVyLiBTaW5jZSBtYW55IG9mIHRoZSBwZW9wbGUgd2hvIGxpdmUgaW4gV2VzdCBMaXR0bGUgUm9jayBnbyB0byB3b3JrIGFuZCBzY2hvb2wgZG93bnRvd24sIGl0IGlzIHVubGlrZWx5IHRoYXQgdGhleSB3aWxsIGJlIGFibGUgdG8gY29tbXV0ZSB2aWEgdHJhaWxzIGZvciBwZWRlc3RyaWFuIG9yIGN5Y2xpc3QuCgojIyMgUHJvcG9zZWQgUHJvamVjdGlvbnMKCmBgYHtyLCBpbmNsdWRlID0gRkFMU0V9CmxpdHRsZV9wb3BfMjAxMCA8LSBnZXRfZGVjZW5uaWFsKGdlb2dyYXBoeSA9ICJ0cmFjdCIsIHZhcmlhYmxlID0gIlAwMDEwMDEiLCBzdGF0ZSA9ICJBUiIsIGNvdW50eSA9ICJQdWxhc2tpIENvdW50eSIsIHllYXIgPSAiMjAxMCIsIGdlb21ldHJ5ID0gVFJVRSkgCgpsaXR0bGVfcG9wXzIwMDAgPC0gZ2V0X2RlY2VubmlhbChnZW9ncmFwaHkgPSAidHJhY3QiLCB2YXJpYWJsZSA9ICJQMDAxMDAxIiwgc3RhdGUgPSAiQVIiLCBjb3VudHkgPSAiUHVsYXNraSBDb3VudHkiLCB5ZWFyID0gIjIwMDAiLCBnZW9tZXRyeSA9IFRSVUUpIAoKYGBgCgpgYGB7ciwgZWNobyA9IEZBTFNFLCBvdXQud2lkdGggPSAiNTAlIiwgb3V0LmhlaWdodCA9ICI1MCUiLCBmaWcuY2FwID0gInBvcHVsYXRpb24gcHlyYW1pZCJ9CmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJ0cmFjdHBvcHByb2oucG5nIikKYGBgCkFib3ZlIGFyZSB0aGUgcG9wdWxhdGlvbiBwcm9qZWN0aW9ucyB0aGF0IEkgcHJvZHVjZWQgZm9yIHRoZSBmaXZlIHRyYWN0cyB3aXRoaW4gdGhlIHN0dWR5IGFyZWEuIEkgZGV2ZWxvcGVkIHRoZW0gd2l0aCB0aGUgInRyZW5kIHByb2plY3Rpb24iIEV4Y2VsIHdvcmtib29rIHByb3ZpZGVkIGluIFNlc3Npb24gMTEsIHVzaW5nIHRvdGFsIHBvcHVsYXRpb24gZGF0YS4gSW4gdGhlIHdvcmtib29rLCBJIGlucHV0IGRhdGEgZnJvbSB0aGUgMjAwMCBhbmQgMjAxMCBjZW5zdXMuIEkgYWxzbyB1c2VkIDIwMTkgQUNTIDUteWVhciBlc3RpbWF0ZXMgYXMgYSBzdWJzdGl0dXRlIGZvciAyMDIwIGNlbnN1cyBkYXRhLiBNb3JlIGFjY3VyYXRlIHByb2plY3Rpb25zIGNvdWxkIGJlIG1hZGUgd2hlbiB0cmFjdC1sZXZlbCBkYXRhIGZyb20gdGhlIDIwMjAgY2Vuc3VzIGlzIHJlbGVhc2VkLgoKVGhlc2UgY2hhcnRzIHRlbGwgYSBjb21wZWxsaW5nIHN0b3J5IGFib3V0IGhvdyBncm93dGggaXMgaGFwcGVuaW5nIGluIFdlc3QgTGl0dGxlIFJvY2suIENoZW5hbCBhbmQgQ2hhcmxlc3RvbiBIZWlnaHRzIGFyZSBleHBlY3RlZCB0byBncm93IGF0IG11Y2ggZmFzdGVyIHJhdGVzIHRoYW4gdGhlIHJlc3Qgb2YgV2VzdCBMaXR0bGUgUm9jay4gUGlubmFjbGUgVmFsbGV5IGlzIGV4cGVjdGVkIHRvIGdyb3cgYXQgYSBtb2RlcmF0ZSBwYWNlLCB3aGlsZSBSaXZlciBNb3VudGFpbiBhbmQgUGFua2V5IGFyZSBleHBlY3RlZCB0byBzdGFnbmF0ZS4gSW4gbW9zdCBjYXNlcywgSSB3b3VsZCBzYXkgdGhhdCB0aGUgbGluZWFyIGFuZCBnb21wZXJ0eiBwcm9qZWN0aW9ucyBhcmUgdGhlIG1vc3QgYWNjdXJhdGUsIHRob3VnaCB0aGUgcGFyYWJvbGljIHByb2plY3Rpb25zIHNlZW0gbW9yZSBhY2N1cmF0ZSBpbiB0aGUgdHJhY3RzIHRoYXQgYXJlIGdyb3dpbmcgbW9yZSBzbG93bHkuCgojIEZvcmVjYXN0CgpDZW50cmFsIEFya2Fuc2FzJ3MgcmVnaW9uYWwgcGxhbm5pbmcgYXV0aG9yaXR5IGVzdGltYXRlZCBpbiB0aGVpciAyMDUwIGxvbmctcmFuZ2UgcGxhbiB0aGF0IHRoZSByZWdpb24gd2lsbCBncm93IGJ5IG1vcmUgdGhhbiAzMCUgaW4gdGhlIG5leHQgdGhpcnR5IHllYXJzLiBUaGVpciBlc3RpbWF0ZSBpcyBiYXNlZCBvbiBhIGxpbmVhciBwb3B1bGF0aW9uIHByb2plY3Rpb24gLSB0aGUgY2l0eSBncmV3IGJ5IDE1JSBiZXR3ZWVuIDIwMDAgYW5kIDIwMTUsIHNvIHRoZXkgZXhwZWN0IGl0IHRvIGdyb3cgYXQgdGhlIHNhbWUgcmF0ZSBpbiB0aGUgZnV0dXJlLiBTdGlsbCwgTGl0dGxlIFJvY2sgaXMgZ3Jvd2luZyBhdCBhIG11Y2ggc2xvd2VyIHBhY2UgdGhhbiBvdGhlciBwYXJ0cyBvZiB0aGUgc3RhdGUsIHNwZWNpZmljYWxseSBOb3J0aHdlc3QgQXJrYW5zYXMuIExhc3QgeWVhciwgTm9ydGh3ZXN0IEFya2Fuc2FzIGhhZCBhIHRvdGFsIG5ldCBtaWdyYXRpb24gb2YgNiwwMDAgcmVzaWRlbnRzLCB3aGlsZSB0aGUgTGl0dGxlIFJvY2sgbWV0cm8gb25seSBoYWQgMTUwLiBUaGUgTGl0dGxlIFJvY2sgYXJlYSBoYXMgbm90IGV4cGVyaWVuY2VkIG11Y2ggZ3Jvd3RoLCBpbiB0ZXJtcyBvZiBqb2JzIGFuZCBkZXZlbG9wbWVudCwgd2hlbiBjb21wYXJlZCB0byBOb3J0aHdlc3QgQXJrYW5zYXMuIFdoaWxlIExpdHRsZSBSb2NrIGlzIHRoZSBsYXJnZXN0IG1ldHJvcG9saXRhbiBhcmVhIGluIHRoZSBzdGF0ZSwgTm9ydGh3ZXN0IEFya2Fuc2FzIGlzIGV4cGVjdGVkIHRvIG91dGdyb3cgQ2VudHJhbCBBcmthbnNhcyBieSAyMDMwLiBTbywgYXMgTm9ydGh3ZXN0IEFya2Fuc2FzIGNvbnRpbnVlcyB0byBncm93LCBpdCBzZWVtcyBtb3JlIHJlYWxpc3RpYyB0aGF0IGdyb3d0aCBpbiBMaXR0bGUgUm9jayB3aWxsIHN0YWduYXRlIGJ5IDIwNTAuIEFsc28sIHdoZW4gbG9va2luZyBhdCByZWdpb25hbCBkYXRhLCB0aGVyZSBpcyBncm93dGggaGFwcGVuaW5nIGluIG5laWdoYm9yaW5nIGNpdGllcyBhbmQgY291bnRpZXMgd2hpY2ggY291bGQgc3VnZ2VzdCB0aGF0IG1hbnkgcmVzaWRlbnRzIG9mIExpdHRsZSBSb2NrIGFyZSBtb3ZpbmcgdG8gdGhvc2UgcGxhY2VzLgoKU3RpbGwsIGdyb3d0aCB3aWxsIGNvbnRpbnVlIHRvIGhhcHBlbiBpbiBzb21lIHBhcnRzIG9mIExpdHRsZSBSb2NrLiBXaGVuIGV4YW1pbmluZyB0aGUgZml2ZSBjZW5zdXMgdHJhY3RzIHRoYXQgY29tcHJpc2UgdGhlIHN0dWR5IGFyZWEgZm9yIHRoZSBIaWdod2F5IDEwIHJvYWQgd2lkZW5pbmcgcHJvamVjdCwgaXQgYmVjYW1lIGFwcGFyZW50IHRoYXQgZXZlbiB3aXRoaW4gV2VzdCBMaXR0bGUgUm9jaywgZ3Jvd3RoIHdpbGwgbGlrZWx5IG9jY3VyIGluIHNvbWUgcGFydHMgYW5kIG5vdCBvdGhlcnMuIENoZW5hbCB3aWxsIGxpa2VseSBjb250aW51ZSB0byBleHBlcmllbmNlIHRoZSBtb3N0IGdyb3d0aCBhbmQgbmV3IGRldmVsb3BtZW50LCBhcyBpdCBpcyB0aGUgZmFzdGVzdCBncm93aW5nIHRyYWN0IGluIHRoZSBjaXR5IHdpdGggdGhlIHdlYWx0aGllc3QgcmVzaWRlbnRzLiBDaGFybGVzdG9uIEhlaWdodHMgYW5kIFBpbm5hY2xlIFZhbGxleSB3aWxsIGZvbGxvdyBhIHNpbWlsYXIgdHJlbmQgYXMgdGhleSBjb250aW51ZXMgdG8gZGV2ZWxvcCwgd2hpbGUgUGFua2V5IGFuZCBSaXZlciBNb3VudGFpbiB3aWxsIGxpa2VseSBub3QgZXhwZXJpZW5jZSBtdWNoIG5ldyBncm93dGggYXQgYWxsLiBBbGwgb2YgdGhlIHRyYWN0cyBwcmltYXJpbHkgY29udGFpbiBzdWJ1cmJhbiwgcmVzaWRlbnRpYWwgbmVpZ2hib3Job29kcy4gRnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBncm93dGggaW4gdGhlIHRyYWN0cyBoaW5nZXMgb24gd2hlbiB0aGV5IHdlcmUgZmlyc3QgZGV2ZWxvcGVkLiBXZXN0IExpdHRsZSBSb2NrIGlzIGFuIGFyZWEgdGhhdCBpcyBkZWZpbmVkIGJ5IHNwcmF3bCwgc28gc2luY2UgUGFua2V5IGFuZCBSaXZlciBNb3VudGFpbiB3ZXJlIGZ1bGx5IGRldmVsb3BlZCBiZXR3ZWVuIHRoZSAxOTgwcyBhbmQgMjAwMHMsIGl0IG1ha2VzIHNlbnNlIHRoYXQgdGhleSB3b3VsZCBub3QgZXhwZXJpZW5jZSBtdWNoIG5ldyBncm93dGguIAoKU2luY2UgdGhlcmUgYXJlIG5vIGluY2VudGl2ZXMgZm9yIHRoZSBjaXR5IHRvIGxpbWl0IHNwcmF3bCBhbmQgZW5jb3VyYWdlIGRlbnNpdHksIGl0IGlzIGxpa2VseSB0aGF0IHRoZSBwcm9wZXJ0aWVzLCBpbmZyYXN0cnVjdHVyZSwgYW5kIHBlb3BsZSBpbiBQYW5rZXkgYW5kIFJpdmVyIE1vdW50YWluIHdpbGwgY29udGludWUgdG8gYWdlLiBUaGUgd2lkZW5pbmcgb2YgSGlnaHdheSAxMCBtaWdodCBlbmNvdXJhZ2UgbmV3IGNvbW1lcmNpYWwgZGV2ZWxvcG1lbnQgYWxvbmcgdGhlIHJvYWR3YXksIGJ1dCBpdCB3aWxsIGxpa2VseSBoYXZlIGZldyBwaHlzaWNhbCBpbXBhY3RzIG9uIHJlc2lkZW50aWFsIGFyZWFzLiBOZXZlcnRoZWxlc3MsIHRoZSB3aWRlbmluZyBvZiBIaWdod2F5IDEwIGNvdWxkIG5lZ2F0aXZlbHkgYWZmZWN0IHByb3BlcnR5IHZhbHVlcyBpbiB0aG9zZSB0cmFjdHMsIHdoaWNoIGNvdWxkIHB1c2ggY3VycmVudCByZXNpZGVudHMgdG8gbmV3ZXIgbmVpZ2hib3Job29kcyBpbiBDaGVuYWwgb3IgQ2hhcmxlc3RvbiBIZWlnaHRzLCBmdXJ0aGVyIGV4YWNlcmJhdGluZyBzcHJhd2wuIFRoZSBuZWlnaGJvcmhvb2Qgb2YgUGFua2V5IHdpbGwgdW5kZW5pYWJseSBiZSBpbXBhY3RlZCBieSB0aGUgSGlnaHdheSAxMCByb2FkIHdpZGVuaW5nIHByb2plY3QuIEFzIGEgbG93LWRlbnNpdHksIG5vdC1mdWxseS1kZXZlbG9wZWQgcmVzaWRlbnRpYWwgbmVpZ2hib3Job29kIHNpdHVhdGVkIGFsb25nIEhpZ2h3YXkgMTAsIHRoZSBjaXR5IGhhcyBwbGFjZWQgcHJlc3N1cmUgb24gcmVzaWRlbnRzIG9mIHRoZSBuZWlnaGJvcmhvb2QgdG8gbW92ZSBlbHNld2hlcmUuIFRoaXMgaXMgYmVjYXVzZSB0aGUgbmVpZ2hib3Job29kIHdpbGwgbm8gbG9uZ2VyIGJlIGFsaWduZWQgd2l0aCB0aGUgbGFuZCB1c2UgdmlzaW9uIGZvciB0aGUgYXJlYSBvbmNlIHRoZSByb2FkIGlzIHdpZGVuZWQuIEFzIGlzLCB0aGUgUGFua2V5IG5laWdoYm9yaG9vZCBpcyBwaHlzaWNhbGx5IGRpdmlkZWQgYnkgSGlnaHdheSAxMC4gV2l0aCBhIHNwZWVkIGxpbWl0IG9mIDQ1IGFuZCBsaW1pdGVkIHZpc2lvbiBhcm91bmQgdGhlIGJlbmQgd2hlcmUgdGhlIG5laWdoYm9yaG9vZCBpcyBzaXR1YXRlZCwgaXQncyB1bnNhZmUgZm9yIHJlc2lkZW50cyBvZiBQYW5rZXkgdG8gdHJhdmVsIGZyb20gb25lIHNpZGUgb2YgdGhlIG5laWdoYm9yaG9vZCB0byB0aGUgb3RoZXIuIFdpZGVuaW5nIHRoZSByb2FkIHdpbGwgdW5kb3VidGVkbHkgbWFrZSB0cmF2ZWwgbGVzcyBzYWZlIGZvciByZXNpZGVudHMgb2YgUGFua2V5IGFuZCBleHBvc2UgdGhlbSB0byBtb3JlIHRyYWZmaWMgbm9pc2UgYW5kIHZpc3VhbCBpbXBhY3RzLiBBbHNvLCByZXNpZGVudHMgd2hvc2UgaG9tZXMgd2VyZSBkaXJlY3RseSBhZGphY2VudCB0byB0aGUgcm9hZHdheSBoYXZlIGFscmVhZHkgaGFkIHRvIHNlbGwgdGhlaXIgcHJvcGVydHkgYW5kIG1vdmUgZWxzZXdoZXJlLiBTbywgd2hpbGUgdGhpcyBwcm9qZWN0IG1heSBiZSBmYWNpbGl0YXRpbmcgb3ZlcmFsbCBncm93dGggaW4gV2VzdCBMaXR0bGUgUm9jayBhbmQgYWxsZXZpYXRpbmcgY29uZ2VzdGlvbiBpbiB0aGUgc2hvcnQtcnVuLCBpdCB3aWxsIGFsc28gYmUgYnJlYWtpbmcgYXBhcnQgbG9uZy1zdGFuZGluZyBjb21tdW5pdGllcyBsaWtlIHRob3NlIGluIFBhbmtleSBhbmQgZW5jb3VyYWdpbmcgc3ByYXdsIHRoYXQgd2lsbCBuZWdhdGl2ZWx5IGltcGFjdCBleGlzdGluZyBuZWlnaGJvcmhvb2RzLiAKClRoZSB0YWJsZSBiZWxvdyBzaG93cyB0aGUgcGVyY2VudCBjaGFuZ2UgaW4gb2NjdXBpZWQgaG91c2luZyB1bml0cyBmb3IgZWFjaCB0cmFjdCBpbiBXZXN0IExpdHRsZSBSb2NrLiBUaGlzIHN1cHBvcnRzIHRoZSBhcmd1bWVudCB0aGF0IFBhbmtleSBhbmQgUml2ZXIgTW91bnRhaW4gYXJlIGV4cGVyaWVuY2luZyBtaW5pbWFsIGdyb3d0aCB3aGVuIGNvbXBhcmVkIHRvIHRoZSBvdGhlciB0cmFjdHMgaW4gV2VzdCBMaXR0bGUgUm9jay4KCiMjIyMgQ2hhbmdlIGluIE9jY3VwaWVkIEhvdXNpbmcgVW5pdHMKfCAgIHwgMjAwMCB8IDIwMTAgfCAlIENoYW5nZSB8CnwtLS18LS0tfC0tLXwtLS18CnwgUGFua2V5IHwgMSwxMjcgfCAxLDE4MiB8IDQuOSUgfAp8IFJpdmVyIE1vdW50YWluIHwgMiwxOTYgfCAyLDIyOCB8IDEuNSUgfAp8IFBpbm5hY2xlIFZhbGxleSB8IDg4OSB8IDEsNjgyIHwgODkuMiUgfAp8IENoYXJsZXN0b24gSGVpZ2h0cyB8IDEsMDkxIHwgMSw5NTcgfCA3OS40JSB8CnwgQ2hlbmFsIHwgNTM4IHwgMSwzMTcgfCAxNDQuOCUgfAoKQ2hlbmFsIGlzIGJ5IGZhciB0aGUgdHJhY3QgdGhhdCBoYXMgZXhwZXJpZW5jZWQgdGhlIG1vc3QgbmV3IGRldmVsb3BtZW50LiBQaW5uYWNsZSBWYWxsZXkgbGlrZWx5IHNob3dzIGEgaGlnaGVyIHBlcmNlbnQgY2hhbmdlIGluIG9jY3VwaWVkIGhvdXNpbmcgdW5pdHMgc2luY2UgaXQgaXMgYSBsYXJnZXIgdHJhY3QgdGhhdCBjb250YWlucyBtb3JlIHVuZGV2ZWxvcGVkIGxhbmQuIFNvbWUgcmVzaWRlbnRzIGFuZCBwb2xpdGljaWFucyBpbiB0aGUgY2l0eSBoYXZlIHB1c2hlZCBiYWNrIGFnYWluc3QgdGhlIGdyb3d0aCBpbiBmYXIgV2VzdCBMaXR0bGUgUm9jaywgYmVjYXVzZSBpdCBoYXMgbGVkIHRvIGdyZWF0ZXIgc2VncmVnYXRpb24gYm90aCByYWNpYWxseSBhbmQgZWNvbm9taWNhbGx5LCBhbmQgZGVncmFkYXRpb24gb2Ygc2VydmljZSBwcm92aXNpb25zIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjaXR5LiBTbywgZXNzZW50aWFsbHksIHRoZSByZXN0IG9mIHRoZSBjaXR5IGlzIGV4cGVjdGVkIHRvIHN1ZmZlciBhcyBhIHJlc3VsdCBvZiBpbmNyZWFzZWQgc3ByYXdsLiBPbmUgbWFqb3IgY29uY2VybiBhc3NvY2lhdGVkIHdpdGggZ3Jvd3RoIGluIENoZW5hbCBhbmQgQ2hhcmxlc3RvbiBIZWlnaHRzIGlzIGVkdWNhdGlvbi4gVGhlcmUgYXJlIG5vIHB1YmxpYyBtaWRkbGUgb3IgaGlnaCBzY2hvb2xzIGluIFdlc3QgTGl0dGxlIFJvY2ssIHNvIG1hbnkgZmFtaWxpZXMgc2VuZCB0aGVpciBjaGlsZHJlbiB0byBwcml2YXRlIGFuZCBjaGFydGVyIHNjaG9vbHMuIFRoZSBjaXR5IGhhcyBhbHNvIHB1dCBtb3JlIGZ1bmRpbmcgaW50byBlbGVtZW50YXJ5IHNjaG9vbHMgaW4gV2VzdCBMaXR0bGUgUm9jayB3aGljaCBoYXMgbGVkIHRvIHRoZSBjbG9zdXJlIGFuZC9vciBjb25zb2xpZGF0aW9uIG9mIHNjaG9vbHMgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNpdHkuIFRoZSBleHBhbnNpb24gb2YgSGlnaHdheSAxMCBhbmQgdGhlIGVuY291cmFnZW1lbnQgb2YgbmV3IGdyb3d0aCBpbiBmYXIgV2VzdCBMaXR0bGUgUm9jayB3aWxsIHVuZG91YnRlZGx5IHB1dCBwcmVzc3VyZSBvbiB0aGUgY2l0eSB0byBkZXZlbG9wIG1pZGRsZSBhbmQgaGlnaCBzY2hvb2xzIGluIHRoYXQgcGFydCBvZiB0b3duLiBJbiB0dXJuLCBmdW5kaW5nIHdpbGwgYmUgcmVkdWNlZCBmb3Igc2Nob29scyBpbiBvdGhlciBwYXJ0cyBvZiBMaXR0bGUgUm9jayB3aGljaCB3aWxsIGluZXZpdGFibHkgZGltaW5pc2ggdGhlIHBvc3NpYmlsaXR5IGZvciBlcXVpdGFibGUgYWNjZXNzIHRvIG9wcG9ydHVuaXR5LgoKIyBDb25jbHVzaW9uCgpXaWRlbmluZyBIaWdod2F5IDEwIHdpbGwgZmFjaWxpdGF0ZSBncm93dGggYW5kIGFsbGV2aWF0ZSB0cmFmZmljIGNvbmdlc3Rpb24gaW4gcGFydHMgb2YgV2VzdCBMaXR0bGUgUm9jay4gQXMgc3RhdGVkIGluIEFSRE9UJ3MgcHJvamVjdCBwcm9wb3NhbCwgdGhlIGRpcmVjdCBiZW5lZml0cyBvZiB0aGUgcHJvamVjdCBpbmNsdWRlIGluY3JlYXNlZCBjb25uZWN0aXZpdHksIGltcHJvdmVkIHNhZmV0eSBmb3IgZHJpdmVycywgYW5kIHJlZHVjZWQgYWlyIHBvbGx1dGlvbiBmcm9tIHdpdGggaWRsaW5nLiBBZnRlciBleGFtaW5pbmcgdGhlIGRlbW9ncmFwaGljIHByb2ZpbGUgZm9yIHRoZSBjb3VudHkgYW5kIGRldmVsb3BpbmcgcG9wdWxhdGlvbiBwcm9qZWN0aW9ucyBhbmQgZm9yZWNhc3RzIGZvciBib3RoIHRoZSBjaXR5IGFuZCBXZXN0IExpdHRsZSBSb2NrLCBpdCdzIGNsZWFyIHRoYXQgdGhlIHByb2plY3Qgd2lsbCBhbHNvIGhhdmUgbmVnYXRpdmUgaW1wYWN0cy4gT25lIG9mIHRoZSBtYWluIGRvd25zaWRlcyBvZiB0aGUgcm9hZC13aWRlbmluZyBwcm9qZWN0IGlzIHRoYXQgaXQgd2lsbCBmdXJ0aGVyIGZhY2lsaXRhdGUgc3ByYXdsLiBJbiB0aGUgbG9uZy1ydW4sIHRoaXMgd2lsbCBsZWFkIHRvIG1vcmUgcG9sbHV0aW9uLCBpbmVxdWl0eSwgYW5kIHZlaGljbGUtZGVwZW5kZW5jeS4gV2l0aCByZWdhcmQgdG8gdGhlIFBhbmtleSBuZWlnaGJvcmhvb2QsIHdpZGVuaW5nIEhpZ2h3YXkgMTAgaGFzIGFscmVhZHkgZGlzcGxhY2VkIHJlc2lkZW50cyBhbmQgd2lsbCB1bHRpbWF0ZWx5IGJyZWFrIGFwYXJ0IHRoZSBjb21tdW5pdHkuCgpXaGlsZSB0aGUgcHJvamVjdCBoYXMgYWxyZWFkeSBiZWVuIGFwcHJvdmVkIGFuZCBlbnRlcmVkIHRoZSBjb25zdHJ1Y3Rpb24gcGhhc2UsIHRoZSBvdXRjb21lcyBvZiB3aWRlbmluZyBIaWdod2F5IDEwIHNob3VsZCBzZXJ2ZSBhcyBhbiBlZHVjYXRpb25hbCBvcHBvcnR1bml0eSBmb3IgQVJET1QgYW5kIExpdHRsZSBSb2NrJ3MgY2l0eSBwbGFubmVycyB0byBjb25zaWRlciB3aGF0IGltcGFjdHMgbmV3IGRldmVsb3BtZW50IG1heSBoYXZlIG9uIGFsbCByZXNpZGVudHMuIFRoZXJlIHNob3VsZCBiZSBncmVhdGVyIGFjY291bnRhYmlsaXR5IHdpdGggcmVnYXJkIHRvIGJvdGggZGlyZWN0LWNvbW11bml0eSBhbmQgY2l0eS13aWRlIGltcGFjdHMuIFRoZSBjaXR5IHNob3VsZCBhbHNvIGNvbnNpZGVyIG1ha2luZyBkZW5zaXR5IGEgaGlnaGVyIHByaW9yaXR5IGluIG9yZGVyIHRvIGRpc2NvdXJhZ2Ugc3ByYXdsIGFuZCBzZWdyZWdhdGlvbi4KCldoaWxlIHRoaXMgcHJvamVjdCBwcm92aWRlcyBhIGJyaWVmIG92ZXJ2aWV3IG9mIGdyb3d0aCB0cmVuZHMgaW4gV2VzdCBMaXR0bGUgUm9jaywgdGhlcmUgYXJlIHNldmVyYWwgb3Bwb3J0dW5pdGllcyB0byBleHBhbmQgdGhpcyByZXNlYXJjaC4gT25lIHdheSB0byBjb250aW51ZSB3b3VsZCBiZSB0byBjb2xsZWN0IG1vcmUgcXVhbGl0YXRpdmUgZGF0YSBkaXJlY3RseSBmcm9tIHJlc2lkZW50cyBlaXRoZXIgdGhyb3VnaCBzdXJ2ZXlzIG9yIGludGVydmlld3MuIFRoZXJlIGFwcGVhciB0byBiZSBhIHZhcmlldHkgb2YgdmFsdWVzIGFuZCBuZWVkcyByZWdhcmRpbmcgaG91c2luZyBhbmQgdHJhbnNpdCwgc28gdW5kZXJzdGFuZGluZyB3aGF0IHRob3NlIG5lZWRzIGFyZSBhbmQgaG93IHdpZGVuaW5nIEhpZ2h3YXkgMTAgd2lsbCBlaXRoZXIgc3VwcG9ydCBvciBvcHBvc2UgdGhvc2Ugd291bGQgYmUgdmFsdWFibGUuIEFsc28sIGV4YW1pbmluZyBvdGhlciBmYWN0b3JzIHJlbGF0ZWQgdG8gaG91c2luZywgZWR1Y2F0aW9uLCBhbmQgam9icyBpbiBtb3JlIGRldGFpbCBhbmQgZGV2ZWxvcGluZyBvcHBvcnR1bml0eSBwcm9qZWN0aW9ucyB3b3VsZCBiZSB1c2VmdWwuCgo=